Data storage systems, such as disk drives, need to be able to accurately detect data that has been stored on a storage media. For example, in a magnetic disk drive, data is stored as a coded series (i.e., a binary series) of magnetic transitions on the surface of a magnetic disk. The read signal, formed by reading the magnetic transitions, is often distorted. Some distortion can be deterministic due to geometry of the read head (transducer) and disk, while other distortion can be variable due to the proximity of other magnetic transitions on the disk, localized deformities on the disk, and irregular grain structure on the disk. In addition, noise may be added to the read signal from head resistance, cable parasitics, and electromagnetic interference from other electronics. Collectively, noise and variable distortion tend to obscure the data within the read signal.
To compensate for the occurrence of errors in a read signal, most data storage systems use an encoder to apply error correction coding to the data before it is stored on a media. The read signal is sampled, and a decoder is used to attempt to detect and correct errors in the sampled signal.
A major source of impairments in disk drive magnetic recording channels is the limited bandwidth of the heads and the magnetic disks compared with the data rate which produces inter symbol interference (ISI). The Viterbi detector is a known technique for attempting to remove ISI. The complexity of the Viterbi detector increases exponentially with the length of the ISI, so the Viterbi detector is usually combined with a finite impulse response (FIR) filter. The FIR filter reduces the ISI length by shaping the channel pulse response to some short well-controlled partial response target. The length of the target k is called the constraint length of the (filtered) channel, and m=k−1 is the channel memory length, where k is usually less than 5 for manageable complexity of the detector.
An ISI channel with memory length m can be represented by a trellis diagram of 2 m states, each state corresponding to the delayed input bits. Referring to FIGS. 1 and 2, an exemplary trellis of a channel with a partial response target 1-D is shown that has two states, “state 0” and “state 1”. Each state is reachable from two previous states and can lead to two different states in response to an input bit (i.e., logic 0 or logic 1). A path through the trellis diagram with N sections (or levels) can define a data block of N bits and which can represent noiseless data read-back from a disk. A Viterbi algorithm uses the trellis diagram of an ISI channel to determine the most likely input sequence by computing the transition probability from each of the states to the next set of states, in view of what is observed or read-back in the presence of channel noise. The probabilities are represented by quantities called metrics. When metrics are defined to be proportional to the negative of the logarithm of the probability, adding of the metrics is equivalent to the reciprocal of the product of the probabilities. Thus, smaller metrics correspond to higher probability events.
Two types of metrics are state metrics, sometimes called path metrics, and branch metrics. A state metric represents the maximum probability that the set of read-back bits leads to the state with which it is associated. A branch metric represents the conditional probability of the read-back bits given that the transition from one state to another occurred.
There are two possible states leading to any given state, each corresponding to the occurrence of a logic 0 or a logic 1 in the highest ordered memory unit of the channel. A detector decides which is the more likely state by an add-compare-select (ACS) operation. Add refers to adding each state metric at the preceding level to the two branch metrics of the branches for the allowable transitions. Compare refers to comparing the pair of such metric sums for paths entering a state (node) at the given level. Select refers to selecting the higher probable one of the two possible states and discarding the other. Thus, only the winning branch is preserved at each node, along with the node state metric. If the two quantities being compared are equal, either branch may be selected, because the probability of an erroneous selection will be the same in either case.
A practical Viterbi detector works on a window size of W, where W>=C and C is the convergence length, which may be 4 to 5 times the memory length of the channel. After the first W trellis sections are processed, the detector compares the 2 m state metrics at the window boundary and the most probable state is selected. A chain back operation is then performed from that state, and the hard decision on the input bit related to the leftmost section can be obtained. Afterwards, the processing window is shifted one section to the right, and the next input bit can be determined in the same manner. It shall be appreciated that each hard decision is made with a fixed lag of W sections for reliable output after sufficient convergence.
A soft detector not only outputs hard decisions, but also outputs soft decision values. The sign of each soft decision value can indicate the hard decision (i.e., logic 0 or logic 1), and the magnitude of the soft decision value can indicate the level of confidence in the hard decision. A soft detector and soft decoder combination utilizes the soft values to improve the system performance.
Soft detection can be computationally intensive and uses more memory than hard detection. For these and other reasons, soft detectors can be difficult to implement in high input/output data bandwidth data storage systems.
The maximum a posteriori (MAP) algorithm is one type of algorithm that generates soft decision values based on a memory system (e.g., an ISI channel, or a convolutional code). As used herein, a “MAP” based detector may include, but not be limited to, logarithm domain type algorithms (referred to as “log-MAP”) and min-sum type algorithms. The log-MAP and its simplified versions are not distinguished herein because they can include the same or similar major functional blocks. It is observed that: 1) the MAX function in max-log-MAP is more accurately replaced by MAX* function in log-MAP using a correction term which is usually implemented in a look-up-table; and 2) some differences between the max-log-MAP and the min-sum algorithms are related to the choices of branch metrics, so that the most probable event has the largest path metric in the max-log-MAP algorithms and the smallest in the min-sum algorithms.